今天讓我們聊聊在 Kaggle 實作手寫數字辨識比賽的結果吧!
這一篇的程式碼可參考 → DAY26-MNIST-CNN.ipynb
與 [DAY16] 使用 Keras 實作手寫數字辨識系統-含程式碼 思考架構差異不大,這邊僅提與 DAY16 程式碼差異之處。
reshape
資料時改成適合輸入進卷積層的形式sklearn
套件中的 train_test_split()
來切割資料的訓練集跟驗證集,這樣模擬預測測試集的結果會與現實情況比較相近。(不過這邊的參考程式碼偷個懶沒有這樣處理,還是在訓練時讓它自己切)loss function
改成sparse_categorical_crossentropy
,就能 fit 資料訓練格式。[DAY25] Kaggle 的參賽版面介紹-以手寫數字辨識比賽為例 介紹了參賽版面,當我們 submit predictions 的地方上傳我們存下來 csv檔結果後,可以看到自己的預測結果-正確率與排名等。
ps. 手寫數字辨識系統的排行榜(Leaderboard)會更新,以提交時間為準,提交後超過兩個月排名就下架,這是為了讓排行榜大小可控等原因。
這邊想額外提的是,當我們看比賽這區時,正在進行中的比賽通常可以看到 public 跟 private 兩個版面。
兩個都是 testing set 的排名,比賽期間看到的排名是全部人用 public testing set 的結果,但到比賽是用比賽完才會公布的 private testing set 的結果做判斷,所以 public 在前幾名的,在 private 則不一定也在前面。
圖片來源:李宏毅老師機器學習課程
我們可以看一下這上圖,實際操作並不推薦看到 public testing set 的結果後再回去修改model,因為會把 public 的偏差結果也學起來。把 public testing set 當參考就好~
這三天的 Kaggle 介紹就先簡單在這邊總結了,了解平台各功能、參賽版面位置後,相信大家都能很快上手,並開始建立累積自己的機器學習實作經驗!明天就讓我們講一下另一個好用的線上服務吧!